package org.mao.base;

import java.util.List;

import org.apache.ibatis.annotations.Param;

public interface BaseDao<T extends BaseEntity> {
	
	/**
	 * 每张表的基础方法，insert一条记录
	 * @param t 某实体类的实例
	 * @return 插入数据库后的实例，能获得自增字段id的值
	 * @throws Exception
	 */
	public void insert(T t);
	
	/**
	 * 每张表的基础方法，update N条记录
	 * @param t 某实体类的实例，只更新有值的字段
	 * @return 更新的记录数
	 * @throws Exception
	 */
	public int update(T t);
	
	/**
	 * 每张表的基础方法，查询唯一一条记录
	 * @param t 某实体类的实例，有值的字段作为查询条件
	 * @return 查询到的实例，查询不到返回null
	 * @throws Exception
	 */
	public T get(T t);
	
	/**
	 * 每张表的基础方法，查询出所有记录，默认限制为1000条
	 * @param limit true-限制查询记录数，默认为1000条，false-不限制，查询出所有记录
	 * @return 实例集合
	 * @throws Exception
	 */
	public List<T> list(@Param("limit") boolean limit);

}
